package com.tedu.api.thread;

/**
 * 线程----创建3种
 * 第一种：子类   继承Thread    方法--【使用率不多】
 *       ①：编写子类 MyThread1 继承 Thread
 *       ②：子类 重写run方法
 *       ③：实例化 MyThread1 对象  调用start方法【启动线程】
 * 第二种：子类  实现Runnable  方案--推荐用法
 *       ①：编写子类MyRunable1 实现 Runable 接口
 *       ②：子类，强制重写run方法【线程运行】
 *       ③：实例化MyRunable1对象【没有start方法】
 *       ④：创建Thread对象，把实例化MyRunable1  对象通过构造器
 *       ⑤：调用Thread对象 start方法
 *     线程 继承Thread 内嵌Runable接口   重写run方法
 *        javaOOP---缺点：Java单继承，子类继承Thread
 *        无法拓展：不仅线程,其他集合，继承其他类，只具备线程功能
 *        启动线程方法  start（）----线程生命周期
 *        缺点：线程创建不明确
 *        实现Runable   真正线程运行---定义run方法 线程运行状态
 *        缺点：线程创建不方便---项目：步骤逻辑清晰
 * 第三种：匿名内部类实现线程--->Lambda表达式
 */
public class ThreadAPI {
    public static void main(String[] args) {
        //③
        MyThread1 mt1=new MyThread1();
        mt1.start();
          //练习：继承Thread线程类--MyThread2[执行结果] 1000次
        MyThread2 mt2=new MyThread2();
        mt2.start();
    }



}
//①MyThread1  子类  | 线程实现类
class MyThread1 extends Thread{
//②重写run方法
    public void run() {
        for(int i=0;i<1000;i++){
            System.out.println("学的one愣one愣的");
        }
    }
}
class MyThread2 extends Thread{
    public void run() {
        for(int i=0;i<1000;i++){
            System.out.println("666");
        }
    }
}
